//package com.lsw.http;
//
//import android.content.Context;
//import android.os.Bundle;
//import android.os.Handler;
//import android.os.Message;
//import android.text.TextUtils;
//import android.widget.Toast;
//
//import com.lsw.Base.Refresh;
//import com.lsw.dialog.DialogProgress;
//import com.lsw.shareUser.ShareUserInfoUtil;
//import com.lsw.util.JsonResultUtil;
//import com.lsw.util.LogUtils;
//
//import java.io.File;
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.Set;
//
//import okhttp3.Call;
//import okhttp3.Callback;
//import okhttp3.FormBody;
//import okhttp3.MediaType;
//import okhttp3.MultipartBody;
//import okhttp3.OkHttpClient;
//import okhttp3.Request;
//import okhttp3.RequestBody;
//import okhttp3.Response;
//
///**
// * 访问网络类
// */
//public class HttpUtil implements Callback {
//    private Context context;
//    private Refresh refresh;
//    private boolean isReturnErrorMsg = true;// 是否返回错误信息
//    private OkHttpClient client;
//
//    @Override
//    public void onFailure(Call call, IOException e) {
//        LogUtils.d("HttpUtil:", "========请求失败========" + "onError==" + e.getMessage());
//        Message message = new Message();
//        message.what = 0;
//        handler.sendMessage(message);
//    }
//
//    Handler handler = new Handler() {
//        @Override
//        public void handleMessage(Message msg) {
//            super.handleMessage(msg);
//            switch (msg.what) {
//                case 0:
//                    callProgress();
//                    showToast("请求失败！", Toast.LENGTH_SHORT);
//                    List<Object> listBackParams = new ArrayList<Object>();
//                    refresh.onRefresh(-1, listBackParams.toArray());
//                    break;
//                case 1:
//                    callProgress();
//                    List<Object> listBackParam = new ArrayList<>();
//                    Bundle bundle = msg.getData();
//                    ResultRequest resultRequest = (ResultRequest) bundle.getSerializable("key");
//                    listBackParam.add(resultRequest.getStatus());
//                    listBackParam.add(resultRequest.getData());
//                    listBackParam.add(resultRequest.getMsg());
//                    refresh.onRefresh(taskId, listBackParam.toArray());
//                    break;
//            }
//        }
//    };
//
//    @Override
//    public void onResponse(Call call, Response response) throws IOException {
//        ResultRequest resultRequest = JsonResultUtil.checkResult(context, response.body().string(), false);
//        if (resultRequest == null || !isReturnErrorMsg) {
//            return;
//        }
//        Message message = new Message();
//        message.what = 1;
//        Bundle bundle = new Bundle();
//        bundle.putSerializable("key", resultRequest);
//        message.setData(bundle);
//        handler.sendMessage(message);
//        LogUtils.d("HttpUtil:", "========请求成功========" + response.toString());
//
//    }
//
//    private DialogProgress dialogProgress;
//    private int taskId;
//    private boolean isDialog = false;// 是否显示加载状态
//    private Toast mToast = null;
//
//    public HttpUtil(Context context, Refresh refresh, int taskId, boolean isDialog) {
//        this.context = context;
//        this.refresh = refresh;
//        this.taskId = taskId;
//        this.isDialog = isDialog;
//        client = new OkHttpClient();
//    }
//
//    /**
//     * get方式
//     *
//     * @param url
//     */
//    public void HttpGet(String url) {
//        if (HttpsLinkUtil.isNetworkConnected(context)) {
//            LogUtils.d("HttpUtil:", "========get请求开始========");
//            LogUtils.d("HttpUtil:", "url=" + url);
//            Request request = new Request.Builder()
//                    .url(url)
//                    .build();
//            client.newCall(request).enqueue(this);
//            isShowProgress();
//        } else {
//            showToast("网络异常，请检查网络是否连接", Toast.LENGTH_SHORT);
//            List<Object> listBackParams = new ArrayList<Object>();
//            refresh.onRefresh(-1, listBackParams.toArray());
//        }
//    }
//
//    /**
//     * get方式
//     *
//     * @param url
//     */
//    public void HttpGet(String url, Callback callback) {
//        if (HttpsLinkUtil.isNetworkConnected(context)) {
//            LogUtils.d("HttpUtil:", "========get请求开始========");
//            LogUtils.d("HttpUtil:", "url=" + url);
//            Request request = new Request.Builder()
//                    .url(url)
//                    .build();
//            if (callback != null)
//                client.newCall(request).enqueue(callback);
//            else client.newCall(request).enqueue(this);
//            isShowProgress();
//        } else {
//            showToast("网络异常，请检查网络是否连接", Toast.LENGTH_SHORT);
//            List<Object> listBackParams = new ArrayList<Object>();
//            refresh.onRefresh(-1, listBackParams.toArray());
//        }
//    }
//
//    /**
//     * post方式
//     *
//     * @param url
//     * @param params
//     */
//    public void HttpPost(String url, Map<String, Object> params, boolean istoken) {
//        if (HttpsLinkUtil.isNetworkConnected(context)) {
//            LogUtils.d("HttpUtil:", "========post请求开始========");
//            LogUtils.d("HttpUtil:", "url=" + url);
//
//            if (params == null) {
//                params = new HashMap<>();
//            }
//            FormBody.Builder builder = new FormBody.Builder();
//            Set<Map.Entry<String, Object>> entries = params.entrySet();
//            String param = "{";
//            for (Map.Entry<String, Object> entry : entries) {
//                if (entry.getValue() != null) {
//                    builder.add(entry.getKey(), entry.getValue().toString());
//                    param += entry.getKey() + ":" + entry.getValue().toString() + ",";
//                }
//            }
//            param += "}";
//            LogUtils.d("HttpUtil:", "请求参数：" + param);
//            RequestBody requestBody = builder.build();
//            Request request;
//            if (istoken) {
//                request = new Request.Builder()
//                        .url(url)
//                        .addHeader("logintoken", ShareUserInfoUtil.getInstance(context).getString(ShareUserInfoUtil.TOKEN, ""))
//                        .post(requestBody)
//                        .build();
//            } else {
//                request = new Request.Builder()
//                        .url(url)
//                        .post(requestBody)
//                        .build();
//            }
//            client.newCall(request).enqueue(this);
//            isShowProgress();
//        } else {
//            showToast("网络异常，请检查网络是否连接", Toast.LENGTH_SHORT);
//            List<Object> listBackParams = new ArrayList<Object>();
//            refresh.onRefresh(-1, listBackParams.toArray());
//        }
//    }
//
//    /**
//     * post方式
//     *
//     * @param url
//     * @param params
//     */
//    public void HttpPost(String url, Map<String, Object> params, Callback callback) {
//        if (HttpsLinkUtil.isNetworkConnected(context)) {
//            LogUtils.d("HttpUtil:", "========post请求开始========");
//            LogUtils.d("HttpUtil:", "url=" + url);
//
//            if (params == null) {
//                params = new HashMap<>();
//            }
//            FormBody.Builder builder = new FormBody.Builder();
//            Set<Map.Entry<String, Object>> entries = params.entrySet();
//            String param = "{";
//            for (Map.Entry<String, Object> entry : entries) {
//                builder.add(entry.getKey(), entry.getValue().toString());
//                param += entry.getKey() + ":" + entry.getValue().toString() + ",";
//            }
//            param += "}";
//            LogUtils.d("HttpUtil", "请求参数：" + param);
//            RequestBody requestBody = builder.build();
//
//            Request request = new Request.Builder()
//                    .url(url)
//                    .post(requestBody)
//                    .build();
//            if (callback != null)
//                client.newCall(request).enqueue(callback);
//            else
//                client.newCall(request).enqueue(this);
//            isShowProgress();
//        } else {
//            showToast("网络异常，请检查网络是否连接", Toast.LENGTH_SHORT);
//            List<Object> listBackParams = new ArrayList<Object>();
//            refresh.onRefresh(-1, listBackParams.toArray());
//        }
//    }
//
//    /**
//     * 上传文件
//     *
//     * @param url
//     * @param key
//     * @param files
//     * @param params
//     */
//    public void HttpUpFile(String url, String key, List<File> files, Map<String, Object> params) {
//        if (HttpsLinkUtil.isNetworkConnected(context)) {
//            LogUtils.d("HttpUtil:", "========请求开始========");
//            LogUtils.d("HttpUtil:", "========上传文件请求开始========");
//            LogUtils.d("HttpUtil:", "url=" + url);
//            MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);
//            if (!TextUtils.isEmpty(key)) {
//                if (files != null) {
//                    if (files.size() == 1) {
//                        builder.addFormDataPart(key, files.get(0).getName(), RequestBody.create(MediaType.parse("image/png"), files.get(0)));
//                    } else {
//                        for (int i = 0; i < files.size(); i++) {
//                            LogUtils.i("file", i + "=" + files.get(i).getName());
//                            builder.addFormDataPart(key + i, files.get(i).getName(), RequestBody.create(MediaType.parse("image/png"), files.get(i)));
//                        }
//                    }
//                }
//            } else {
//                showToast("文件参数名为空", Toast.LENGTH_LONG);
//                return;
//            }
//
//            if (params == null) {
//                params = new HashMap<>();
//            }
//            Set<Map.Entry<String, Object>> entries = params.entrySet();
//            for (Map.Entry<String, Object> entry : entries) {
//                builder.addFormDataPart(entry.getKey(), entry.getValue().toString());
//            }
//            Request request = new Request.Builder()
//                    .url(url)
//                    .post(builder.build())
//                    .build();
//            client.newCall(request).enqueue(this);
//            isShowProgress();
//        } else {
//            showToast("网络异常，请检查网络是否连接", Toast.LENGTH_SHORT);
//            List<Object> listBackParams = new ArrayList<>();
//            refresh.onRefresh(-1, listBackParams.toArray());
//        }
//    }
//
//    /**
//     * 上传文件单图
//     *
//     * @param url
//     * @param key
//     * @param file
//     * @param params
//     */
//    public void HttpUpFileone(String url, String key, File file, Map<String, Object> params) {
//        if (HttpsLinkUtil.isNetworkConnected(context)) {
//            LogUtils.d("HttpUtil:", "========请求开始========");
//            LogUtils.d("HttpUtil:", "========上传文件请求开始========");
//            LogUtils.d("HttpUtil:", "url=" + url);
//            MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);
//            builder.addFormDataPart(key, file.getName(), RequestBody.create(MediaType.parse("image/png"), file));
//            if (params == null) {
//                params = new HashMap<>();
//            }
//            Set<Map.Entry<String, Object>> entries = params.entrySet();
//            for (Map.Entry<String, Object> entry : entries) {
//                builder.addFormDataPart(entry.getKey(), entry.getValue().toString());
//            }
//            Request request = new Request.Builder()
//                    .url(url)
//                    .post(builder.build())
//                    .build();
//            client.newCall(request).enqueue(this);
//            isShowProgress();
//        } else {
//            showToast("网络异常，请检查网络是否连接", Toast.LENGTH_SHORT);
//            List<Object> listBackParams = new ArrayList<>();
//            refresh.onRefresh(-1, listBackParams.toArray());
//        }
//
//    }
//
//
//    /**
//     * 显示进度条
//     */
//    private void isShowProgress() {
//        if (dialogProgress == null) {
//            dialogProgress = new DialogProgress(context);
//        }
//        if (isDialog == true) {
//            dialogProgress.show();
//        }
//    }
//
//    /**
//     * 隐藏进度条
//     */
//    private void callProgress() {
//        if (dialogProgress != null) {
//            dialogProgress.dismiss();
//        }
//    }
//
//
//    /**
//     * 显示Toast消息
//     *
//     * @param msg
//     * @param length
//     */
//    private void showToast(String msg, int length) {
//        if (mToast == null) {
//            mToast = Toast.makeText(context.getApplicationContext(), msg, length);
//        } else {
//            mToast.setText(msg);
//        }
//        mToast.show();
//    }
//
//
//}
